package com.houweishi.module.oaDimission.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.houweishi.common.annotation.Excel;
import com.houweishi.common.core.domain.BaseEntity;
import lombok.Data;

import java.time.LocalDate;
import java.util.StringJoiner;

/**
 * 离职申请对象 oa_dimission
 * 
 * @author houweishi
 * @date 2023-07-19
 */
@Data
public class OaDimission extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 流水单号 */
    @Excel(name = "流水单号")
    private String serialNum;

    /** 公司 */
    @Excel(name = "公司")
    private String company;

    /** 部门 */
    @Excel(name = "部门")
    private String deptName;

    /** 部门id */
    @Excel(name = "部门id")
    private Long deptId;

    /** 岗位 */
    @Excel(name = "岗位")
    private String post;

    /** 岗位id */
    @Excel(name = "岗位id")
    private Long postId;

    /** 类型 */
    @Excel(name = "类型")
    private String type;

    /** 性别 */
    @Excel(name = "性别")
    private String sex;

    /** 入职日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "入职日期", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate entryDate;

    /** 离职申请时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "离职申请时间", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate applyDimissionDate;

    /** 拟离职日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "拟离职日期", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDate dimissionDate;

    /** 离职原因 */
    @Excel(name = "离职原因")
    private String dimissionReason;

    /** 业务状态 */
    @Excel(name = "业务状态")
    private String businessStatus;

    /** 申请人id */
    @Excel(name = "申请人id")
    private Long applyUserId;

    /** 申请人 */
    @Excel(name = "申请人")
    private String applyUserName;

    /** 员工id */
    @Excel(name = "员工id")
    private Long staffId;

    /** 员工姓名 */
    @Excel(name = "员工姓名")
    private String staffName;

    /** 是否使用模板（1是 2否） */
    @Excel(name = "是否使用模板", readConverterExp = "1=是,2=否")
    private String typeStatus;

    /** 审批人id(多个） */
    @Excel(name = "审批人id(多个）")
    private String approver;

    /** 审批人姓名(多个） */
    @Excel(name = "审批人姓名(多个）")
    private String approverName;

    /** 抄送人id（多个） */
    @Excel(name = "抄送人id", readConverterExp = "多=个")
    private String copyerId;

    /** 抄送人姓名(多个） */
    @Excel(name = "抄送人姓名(多个）")
    private String copyerName;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    @Override
    public String toString() {
        return new StringJoiner(", ", OaDimission.class.getSimpleName() + "[", "]")
                .add("id=" + id)
                .add("serialNum='" + serialNum + "'")
                .add("company='" + company + "'")
                .add("deptName='" + deptName + "'")
                .add("deptId=" + deptId)
                .add("post='" + post + "'")
                .add("postId=" + postId)
                .add("type='" + type + "'")
                .add("sex='" + sex + "'")
                .add("entryDate=" + entryDate)
                .add("applyDimissionDate=" + applyDimissionDate)
                .add("dimissionDate=" + dimissionDate)
                .add("dimissionReason='" + dimissionReason + "'")
                .add("businessStatus='" + businessStatus + "'")
                .add("applyUserId=" + applyUserId)
                .add("applyUserName='" + applyUserName + "'")
                .add("staffId=" + staffId)
                .add("staffName='" + staffName + "'")
                .add("typeStatus='" + typeStatus + "'")
                .add("approver='" + approver + "'")
                .add("approverName='" + approverName + "'")
                .add("copyerId='" + copyerId + "'")
                .add("copyerName='" + copyerName + "'")
                .add("delFlag='" + delFlag + "'")
                .toString();
    }
}
